package com.example.ssm.service;

import com.example.ssm.context.PaymentContext;
import com.example.ssm.enums.PaymentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;

/**
 * 支付服务类
 * 作为策略模式的外观，提供向后兼容的API
 */
@Service
public class PaymentService {

    @Autowired
    private PaymentContext paymentContext;

    /**
     * 处理支付
     * @param paymentTypeCode 支付类型代码
     * @param amount 支付金额
     * @param orderId 订单ID
     * @return 支付结果
     */
    public String processPayment(String paymentTypeCode, BigDecimal amount, String orderId) {
        return paymentContext.processPaymentByCode(paymentTypeCode, amount, orderId);
    }

    /**
     * 处理支付（使用枚举方式）
     * @param paymentType 支付类型枚举
     * @param amount 支付金额
     * @param orderId 订单ID
     * @return 支付结果
     */
    public String processPayment(PaymentType paymentType, BigDecimal amount, String orderId) {
        if (paymentType == null) {
            return "支付类型不能为空";
        }
        return paymentContext.processPaymentByCode(paymentType.getCode(), amount, orderId);
    }
}
